#ifndef SEMANTIC_HPP
#define SEMANTIC_HPP

//#include <iostream>
//#include <cstdlib>
//#include <string>
//#include <map>
//#include <vector>
#include "symbolTable.hpp"
//#include <string>
using std::string;
//#include "Parser.hpp"
//#include "lexer.hpp"

class Semantic {

public:

	Semantic();
	bool varUnicity();
	bool checkStack();
	bool isBool();
	int convertToIndex(string type);
	std::string calcTypeBin(string op);
	std::string calcTypeUn(string op);
	void push(string type);
	std::string pop();
	std::string isEmpty();

private:
	string cube[6][7][7];
	std::vector<string> stack;
	bool state;
	void cubeinit();
	int lookup(string);

};

#endif
